// Created by taojiaheng on 2020/6/3.
//
// Worker类 模仿 workerman 框架中的 Worker类
// 实现的功能 可以监听多个端口
// 每个端口开多个进程处理 主进程监听子进程 如果子进程非正常退出 重启子进程补足
// 主进程以守护模式启动

#ifndef WEBSOCKETSERVER_WORKER_H
#define WEBSOCKETSERVER_WORKER_H
#include "../common/cdef.h"
#include "Socket.h"
class Worker {
private:
public:
    // 进程PID数组
    std::vector<int>* pids;
    // 进程数
    int proc_count = 1;
    // 协议或者基于协议的业务实例
    Socket * socket;
    // 创建一个worker
    Worker(Socket * _socket);
    ~Worker();
    static std::vector<Worker *> * worker_list;
    // 运行所有服务
    static void runAll(bool is_daemon);
    // 添加一个worker
    static void addWorker(Worker * worker);
    // fork 所有进程
    static void forkAllProcess();
    // linux 信号处理
    static void initSignal();
    // 设置当前进程为守护进程
    static void setMasterProcessIsDaemon();
};
#endif //WEBSOCKETSERVER_WORKER_H
